package com.cslg.service;

import com.alibaba.fastjson.JSON;
import com.cslg.mapper.CountsMapper;
import com.cslg.mapper.UserMapper;
import com.cslg.pojo.Counts;
import com.cslg.pojo.User;
import com.cslg.pojo.UserExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

//按 Alt + Enter键补全代码，或者在代码最后 .var 回车
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private CountsMapper countsMapper;
    @Override
    public User loginFunction(String id, String password) {
        //        //调用dao层完成数据的操作，用的是逆向工程
        int idint = 0;
        try{
            idint = Integer.parseInt(id);
        }catch (Exception e){
            e.printStackTrace();
        }
//        User user = userMapper.selectByPrimaryKey(idint);
        UserExample example = new UserExample();
        example.or().andIdEqualTo(idint);//可以通过id登陆
        example.or().andPhoneEqualTo(id);//也可以通过手机号登陆
        List<User> users = userMapper.selectByExample(example);
        if (users!=null && users.size()>0){
            if (users.get(0) != null) {//说明查询到该用户，就判断密码是否正确
                if (password.equals(users.get(0).getPassword())){//若password也正确，则登陆成功
                    return users.get(0);
                }
            }
        }
        return null;
    }

    @Override
    public int checkPhone(String phoneString) {
        UserExample example = new UserExample();
        UserExample.Criteria criteria = example.createCriteria();
        criteria.andPhoneEqualTo(phoneString);
        List<User> users = userMapper.selectByExample(example);//查询数据库是否已存在手机号码
        if (users!=null&&users.size()>0){
            return 1;       //若手机号码已存在返回1
        }
        return 0;           //手机号码不存在返回0
    }

    @Override
    public int insertUser(String json) {
        //解析json数据，使用fastjson解析工具解析，很好用
        //将得到的json数据封装到一个User对象中
        User user = JSON.parseObject(json,User.class);
        //将自动生成的数据放到对象中
        user.setRoleId(1);
        user.setCreatedate(new Date());
        System.out.println("user对象："+user);

        //去调用dao层将数据插入数据库完成注册功能
        int i = userMapper.insertSelective(user);
        return i;
    }

    @Override
    public Counts selectCounts() {
        //查询各个表的数据的数量
        return countsMapper.selectCounts();
    }

    @Override
    public List<User> selectUsers() {
        //调用dao查询数据
        UserExample example = new UserExample();
        return userMapper.selectByExample(example);
    }

    @Override
    public int updateUser(User user) {
        //修改用户数据
        int i = userMapper.updateByPrimaryKeySelective(user);
        return i;
    }

    @Override
    public int deleteUser(int id) {
        int i = userMapper.deleteByPrimaryKey(id);
        return i;
    }
}
